<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //生成器是一个特殊的函数，仅支持回调
        function* gen() {
            console.log('gen 中考')
            yield '上高中了'

            console.log('gen 高考')
            yield '上大学了'

            console.log('gen 考研')
            yield '读研了'
        }

        //生成器函数的返回结果是一个迭代器，迭代器每执行一次next()，会执行每一块yield前的代码，并将yield的值返回
        let it = gen()
        console.log(it.next())
        console.log(it.next())
        console.log(it.next())
        console.log(it.next())

        //也可以用for of
        for(let v of gen()) {
            console.log(v)
        }
    </script>
</body>
</html>